Adaptive Mobile Device Navigation

ABSTRACT

Adaptive mobile device navigation system, methods, and apparatus provide location information for a mobile device performing location estimation using dead reckoning. Multiple estimation modes can be selected including a mode for restricting measured movements to surrounding streets. Updated location fixes can be obtained through turn comparison with surrounding map information and user feedback. User feedback prompts can include photographs having geographic tag information corresponding to locations near an estimated location of the device.

RELATED APPLICATION

This application claims a benefit of priority from U.S. patentapplication Ser. No. 11/970,766, filed Jan. 8, 2008, which claims abenefit of priority from U.S. Provisional Patent Application No.60/946,817, filed Jun. 28, 2007, both of which are incorporated byreference herein in their entirety.

TECHNICAL FIELD

The present invention relates generally to mobile device aidednavigation.

BACKGROUND

The role of traditional printed maps is being supplanted by moderndevices capable of rendering dynamic map displays. Devices that includemapping or navigation applications provide information regarding an areaselected by a user by recalling map data from local memory or networkedservices.

Mapping devices often include the ability to provide directions from apoint of origin to a destination. When coupled with any of a number ofpositioning technologies, a mapping device can display a currentposition on a map as well as deliver navigation instructions based onthe current position to route a user to a desired destination.Positioning technologies include satellite positioning systems such asGPS, information from nearby cellular base stations, and informationfrom other transmitters such as, such as Wi-Fi networks.

Not all mobile mapping devices include the necessary hardware andsoftware to receive positioning information. In addition, due tointerfering factors of the environment in which a mobile device is beingoperated, the mobile device may not be able to receive positioninginformation even if it is equipped to do so.

SUMMARY

Disclosed herein are systems and methods for adaptive mobile devicenavigation. In one implementation, a device position is stored inmemory. Sensor data is received from a motion sensor measuring movementof the device. The sensor data is compared to map data corresponding tothe device location. An estimated current device location is determined.The determination is based at least in part on the device position,received sensor data, and an interpretation of the received sensor dataas corresponding to movement along at least one pathway defined by themap data.

In an implementation, the pathway can be a sidewalk or a street. Themotion sensor can be one or a combination of an accelerometer, acompass, and/or a gyroscope.

In an implementation, a device position is stored in memory. Sensor datais received from at least one motion sensor measuring movement of thedevice. An estimated current device location is determined. Thedetermination is based at least in part on the device location and thereceived sensor data. The sensor data is compared to map datacorresponding to the stored location. Feedback is requested regardingthe comparison. In an implementation, a second device positionestablished by a response to the feedback is stored in memory.

In an implementation the prompt includes a photograph. The photographcan be identified from a database of photographs, where the photographincludes geographical tagging information corresponding to a locationthat is within a threshold distance of the estimated current devicelocation.

In an implementation, a mobile device location is determined. Sensordata is received that is related to movement of the mobile device. Anestimated mobile device location is determined based on the devicelocation and the sensor data. The estimated device location is comparedto map data, and the estimated device location is verified based on thecomparison.

Instructions for performing the aforementioned methods may be includedin a computer program product configured for execution by one or moreprocessors.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of an example mobile device.

FIG. 2 is a block diagram of an example network operating environmentfor the mobile device of FIG. 1.

FIG. 3 is a block diagram of an example implementation of the mobiledevice of FIG. 1.

FIG. 4 is a block diagram of an example navigation settings screen ofthe mobile device of FIG. 1.

FIG. 5 is a block diagram of an example map display of the mobile deviceof FIG. 1.

FIG. 6 is a flowchart of an example process for obtaining an updateddead reckoning fix through comparison of a detected turn with map data.

FIG. 7 is a block diagram of an example user feedback prompt of themobile device of FIG. 1.

FIG. 8 is a block diagram of an example screen for accepting an updatedcurrent location from a user on the mobile device of FIG. 1.

FIG. 9 is a block diagram of an example user feedback prompt including aphotograph on the mobile device of FIG. 1.

FIG. 10 is a flowchart of an example process for prompting a user toobtain an updated fix of the mobile device of FIG. 1.

FIG. 11 is a flowchart of an example process for verifying an estimatedlocation of the mobile device of FIG. 1.

Like reference numerals refer to corresponding parts throughout thedrawings.

DETAILED DESCRIPTION

FIG. 1 is a block diagram of an example mobile device 100. The mobiledevice 100 can be, for example, a handheld computer, a personal digitalassistant, a cellular telephone, a network appliance, a camera, a smartphone, an enhanced general packet radio service (EGPRS) mobile phone, anetwork base station, a media player, a navigation device, an emaildevice, a game console, or a combination of any two or more of thesedata processing devices or other data processing devices.

Mobile Device Overview

In some implementations, the mobile device 100 includes atouch-sensitive display 102. The touch-sensitive display 102 canimplement liquid crystal display (LCD) technology, light emittingpolymer display (LPD) technology, or some other display technology. Thetouch-sensitive display 102 can be sensitive to haptic and/or tactilecontact with a user.

In some implementations, the touch-sensitive display 102 can comprise amulti-touch-sensitive display 102. A multi-touch-sensitive display 102can, for example, process multiple simultaneous touch points, includingprocessing data related to the pressure, degree and/or position of eachtouch point. Such processing facilitates gestures and interactions withmultiple fingers, chording, and other interactions. Othertouch-sensitive display technologies can also be used, e.g., a displayin which contact is made using a stylus or other pointing device. Someexamples of multi-touch-sensitive display technology are described inU.S. Pat. Nos. 6,323,846, 6,570,557, 6,677,932, and U.S. PatentPublication 2002/0015024A1, each of which is incorporated by referenceherein in its entirety.

In some implementations, the mobile device 100 can display one or moregraphical user interfaces on the touch-sensitive display 102 forproviding the user access to various system objects and for conveyinginformation to the user. In some implementations, the graphical userinterface can include one or more display objects 104, 106. In theexample shown, the display objects 104, 106, are graphic representationsof system objects. Some examples of system objects include devicefunctions, applications, windows, files, alerts, events, or otheridentifiable system objects.

Exemplary Mobile Device Functionality

In some implementations, the mobile device 100 can implement multipledevice functionalities, such as a telephony device, as indicated by aphone object 110; an e-mail device, as indicated by the e-mail object112; a network data communication device, as indicated by the Web object114; a Wi-Fi base station device (not shown); and a media processingdevice, as indicated by the media player object 116. In someimplementations, particular display objects 104, e.g., the phone object110, the e-mail object 112, the Web object 114, and the media playerobject 116, can be displayed in a menu bar 118. In some implementations,device functionalities can be accessed from a top-level graphical userinterface, such as the graphical user interface illustrated in FIG. 1.Touching one of the objects 110, 112, 114 or 116 can, for example,invoke corresponding functionality.

In some implementations, the mobile device 100 can implement networkdistribution functionality. For example, the functionality can enablethe user to take the mobile device 100 and its associated network whiletraveling. In particular, the mobile device 100 can extend Internetaccess (e.g., Wi-Fi) to other wireless devices in the vicinity. Forexample, mobile device 100 can be configured as a base station for oneor more devices. As such, mobile device 100 can grant or deny networkaccess to other wireless devices.

In some implementations, upon invocation of device functionality, thegraphical user interface of the mobile device 100 changes, or isaugmented or replaced with another user interface or user interfaceelements, to facilitate user access to particular functions associatedwith the corresponding device functionality. For example, in response toa user touching the phone object 110, the graphical user interface ofthe touch-sensitive display 102 may present display objects related tovarious phone functions; likewise, touching of the email object 112 maycause the graphical user interface to present display objects related tovarious e-mail functions; touching the Web object 114 may cause thegraphical user interface to present display objects related to variousWeb-surfing functions; and touching the media player object 116 maycause the graphical user interface to present display objects related tovarious media processing functions.

In some implementations, the top-level graphical user interfaceenvironment or state of FIG. 1 can be restored by pressing a button 120located near the bottom of the mobile device 100. In someimplementations, each corresponding device functionality may havecorresponding “home” display objects displayed on the touch-sensitivedisplay 102, and the graphical user interface environment of FIG. 1 canbe restored by pressing the “home” display object.

In some implementations, the top-level graphical user interface caninclude additional display objects 106, such as a short messagingservice (SMS) object 130, a calendar object 132, a photos object 134, acamera object 136, a calculator object 138, a stocks object 140, aweather object 142, a maps object 144, a notes object 146, a clockobject 148, an address book object 150, and a settings object 152.Touching the SMS display object 130 can, for example, invoke an SMSmessaging environment and supporting functionality; likewise, eachselection of a display object 132, 134, 136, 138, 140, 142, 144, 146,148, 150 and 152 can invoke a corresponding object environment andfunctionality.

Additional and/or different display objects can also be displayed in thegraphical user interface of FIG. 1. For example, if the device 100 isfunctioning as a base station for other devices, one or more“connection” objects may appear in the graphical user interface toindicate the connection. In some implementations, the display objects106 can be configured by a user, e.g., a user may specify which displayobjects 106 are displayed, and/or may download additional applicationsor other software that provides other functionalities and correspondingdisplay objects.

In some implementations, the mobile device 100 can include one or moreinput/output (I/O) devices and/or sensor devices. For example, a speaker160 and a microphone 162 can be included to facilitate voice-enabledfunctionalities, such as phone and voice mail functions. In someimplementations, a loud speaker 164 can be included to facilitatehands-free voice functionalities, such as speaker phone functions. Anaudio jack 166 can also be included for use of headphones and/or amicrophone.

In some implementations, a proximity sensor 168 can be included tofacilitate the detection of the user positioning the mobile device 100proximate to the user's ear and, in response, to disengage thetouch-sensitive display 102 to prevent accidental function invocations.In some implementations, the touch-sensitive display 102 can be turnedoff to conserve additional power when the mobile device 100 is proximateto the user's ear.

Other sensors can also be used. For example, in some implementations, anambient light sensor 170 can be utilized to facilitate adjusting thebrightness of the touch-sensitive display 102. In some implementations,one or more of an accelerometer 172, a compass 173, and a gyroscope 175can be utilized to detect movement of the mobile device 100, asindicated by the directional arrow 174. Accordingly, display objectsand/or media can be presented according to a detected orientation, e.g.,portrait or landscape. In some implementations, the mobile device 100may include circuitry and sensors for supporting a location determiningcapability, such as that provided by the global positioning system (GPS)or other positioning systems (e.g., systems using Wi-Fi access points,television signals, cellular grids, Uniform Resource Locators (URLs)).In some implementations, a positioning system (e.g., a GPS receiver) canbe integrated into the mobile device 100 or provided as a separatedevice that can be coupled to the mobile device 100 through an interface(e.g., port device 190) to provide access to location-based services.

The mobile device 100 can also include a camera lens and sensor 180. Insome implementations, the camera lens and sensor 180 can be located onthe back surface of the mobile device 100. The camera can capture stillimages and/or video.

The mobile device 100 can also include one or more wirelesscommunication subsystems, such as an 802.11b/g communication device 186,and/or a Bluetooth™ communication device 188. Other communicationprotocols can also be supported, including other 802.x communicationprotocols (e.g., WiMax, Wi-Fi, 3G), code division multiple access(CDMA), global system for mobile communications (GSM), Enhanced Data GSMEnvironment (EDGE), etc.

In some implementations, a port device 190, e.g., a Universal Serial Bus(USB) port, or a docking port, or some other wired port connection, canbe included. The port device 190 can, for example, be utilized toestablish a wired connection to other computing devices, such as othercommunication devices 100, network access devices, a personal computer,a printer, or other processing devices capable of receiving and/ortransmitting data. In some implementations, the port device 190 allowsthe mobile device 100 to synchronize with a host device using one ormore protocols, such as, for example, the TCP/IP, HTTP, UDP and anyother known protocol. In some implementations, a TCP/IP over USBprotocol can be used.

Network Operating Environment

FIG. 2 is a block diagram of an example network operating environment200 for the mobile device 100 of FIG. 1. The mobile device 100 of FIG. 1can, for example, communicate over one or more wired and/or wirelessnetworks 210 in data communication. For example, a wireless network 212,e.g., a cellular network, can communicate with a wide area network (WAN)214, such as the Internet, by use of a gateway 216. Likewise, an accesspoint 218, such as an 802.11g wireless access point, can providecommunication access to the wide area network 214. In someimplementations, both voice and data communications can be establishedover the wireless network 212 and the access point 218. For example, themobile device 100 a can place and receive phone calls (e.g., using VoIPprotocols), send and receive e-mail messages (e.g., using POP3protocol), and retrieve electronic documents and/or streams, such as webpages, photographs, and videos, over the wireless network 212, gateway216, and wide area network 214 (e.g., using TCP/IP or UDP protocols).Likewise, the mobile device 100 b can place and receive phone calls,send and receive e-mail messages, and retrieve electronic documents overthe access point 218 and the wide area network 214. In someimplementations, the mobile device 100 can be physically connected tothe access point 218 using one or more cables and the access point 218can be a personal computer. In this configuration, the mobile device 100can be referred to as a “tethered” device.

The mobile devices 100 a and 100 b can also establish communications byother means. For example, the wireless device 100 a can communicate withother wireless devices, e.g., other wireless devices 100, cell phones,etc., over the wireless network 212. Likewise, the mobile devices 100 aand 100 b can establish peer-to-peer communications 220, e.g., apersonal area network, by use of one or more communication subsystems,such as the Bluetooth™ communication device 188 shown in FIG. 1. Othercommunication protocols and topologies can also be implemented.

The mobile device 100 can, for example, communicate with one or moreservices 230, 240, 250, and 260 and/or one or more content publishers270 over the one or more wired and/or wireless networks 210. Forexample, a navigation service 230 can provide navigation information,e.g., map information, location information, route information, andother information, to the mobile device 100. In the example shown, auser of the mobile device 100 b has invoked a map functionality, e.g.,by pressing the maps object 144 on the top-level graphical userinterface shown in FIG. 1, and has requested and received a map for thelocation “1 Infinite Loop, Cupertino, Calif.”

A messaging service 240 can, for example, provide e-mail and/or othermessaging services. A media service 250 can, for example, provide accessto media files, such as song files, movie files, video clips, and othermedia data. One or more other services 260 can also be utilized by themobile device 100.

The mobile device 100 can also access other data and content over theone or more wired and/or wireless networks 210. For example, contentpublishers 270, such as news sites, RSS feeds, web sites, blogs, socialnetworking sites, developer networks, etc., can be accessed by themobile device 100. Such access can be provided by invocation of a webbrowsing function or application (e.g., a browser) in response to a usertouching the Web object 114.

The mobile device 100 can also communicate with one or more GPSSatellite(s) 252 to enable circuitry and sensors (e.g., a GPS receiveron the mobile device 100) to support a location determining capability.

Exemplary Mobile Device Architecture

FIG. 3 is a block diagram 300 of an example implementation of the mobiledevice 100 of FIG. 1. The mobile device 100 can include a memoryinterface 302, one or more data processors, image processors and/orcentral processing units 304, and a peripherals interface 306. Thememory interface 302, the one or more processors 304 and/or theperipherals interface 306 can be separate components or can beintegrated in one or more integrated circuits. The various components inthe mobile device 100 can be coupled by one or more communication busesor signal lines.

Sensors, devices and subsystems can be coupled to the peripheralsinterface 306 to facilitate multiple functionalities. For example, amotion sensor 310, a light sensor 312, and a proximity sensor 314 can becoupled to the peripherals interface 306 to facilitate the orientation,lighting and proximity functions described with respect to FIG. 1. Othersensors 316 can also be connected to the peripherals interface 306, suchas a positioning system (e.g., GPS receiver), a temperature sensor, abiometric sensor, or other sensing device, to facilitate relatedfunctionalities.

A camera subsystem 320 and an optical sensor 322, e.g., a chargedcoupled device (CCD) or a complementary metal-oxide semiconductor (CMOS)optical sensor, can be utilized to facilitate camera functions, such asrecording photographs and video clips.

Communication functions can be facilitated through one or more wirelesscommunication subsystems 324, which can include radio frequencyreceivers and transmitters and/or optical (e.g., infrared) receivers andtransmitters. The specific design and implementation of thecommunication subsystem 324 can depend on the communication network(s)over which the mobile device 100 is intended to operate. For example, amobile device 100 may include communication subsystems 324 designed tooperate over a GSM network, a GPRS network, an EDGE network, a Wi-Fi orWiMax network, and a Bluetooth™ network. In particular, the wirelesscommunication subsystems 324 may include hosting protocols such that thedevice 100 may be configured as a base station for other wirelessdevices.

An audio subsystem 326 can be coupled to a speaker 328 and a microphone330 to facilitate voice-enabled functions, such as voice recognition,voice replication, digital recording, and telephony functions.

The I/O subsystem 340 can include a touch screen controller 342 and/orother input controller(s) 344. The touch-screen controller 342 can becoupled to a touch screen 346. The touch screen 346 and touch screencontroller 342 can, for example, detect contact and movement or breakthereof using any of a plurality of touch sensitivity technologies,including but not limited to capacitive, resistive, infrared, andsurface acoustic wave technologies, as well as other proximity sensorarrays or other elements for determining one or more points of contactwith the touch screen 346.

The other input controller(s) 344 can be coupled to other input/controldevices 348, such as one or more buttons, rocker switches, thumb-wheel,infrared port, USB port, and/or a pointer device such as a stylus. Theone or more buttons (not shown) can include an up/down button for volumecontrol of the speaker 328 and/or the microphone 330.

In one implementation, a pressing of the button for a first duration maydisengage a lock of the touch screen 346; and a pressing of the buttonfor a second duration that is longer than the first duration may turnpower to the mobile device 100 on or off. The user may be able tocustomize a functionality of one or more of the buttons. The touchscreen 346 can, for example, also be used to implement virtual or softbuttons and/or a keyboard.

In some implementations, the mobile device 100 can present recordedaudio and/or video files, such as MP3, AAC, and MPEG files. In someimplementations, the mobile device 100 can include the functionality ofan MP3 player, such as an iPod™. The mobile device 100 may, therefore,include a 36-pin connector that is compatible with the iPod. Otherinput/output and control devices can also be used.

The memory interface 302 can be coupled to memory 350. The memory 350can include high-speed random access memory and/or non-volatile memory,such as one or more magnetic disk storage devices, one or more opticalstorage devices, and/or flash memory (e.g., NAND, NOR). The memory 350can store an operating system 352, such as Darwin, RTXC, LINUX, UNIX, OSX, WINDOWS, or an embedded operating system such as VxWorks. Theoperating system 352 may include instructions for handling basic systemservices and for performing hardware dependent tasks. In someimplementations, the operating system 352 can be a kernel (e.g., UNIXkernel).

The memory 350 may also store communication instructions 354 tofacilitate communicating with one or more additional devices, one ormore computers and/or one or more servers. The memory 350 may includegraphical user interface instructions 356 to facilitate graphic userinterface processing; sensor processing instructions 358 to facilitatesensor-related processing and functions; phone instructions 360 tofacilitate phone-related processes and functions; electronic messaginginstructions 362 to facilitate electronic-messaging related processesand functions; web browsing instructions 364 to facilitate webbrowsing-related processes and functions; media processing instructions366 to facilitate media processing-related processes and functions;GPS/Navigation instructions 368 to facilitate GPS and navigation-relatedprocesses and instructions; camera instructions 370 to facilitatecamera-related processes and functions; and/or other softwareinstructions 372 to facilitate other processes and functions.

Each of the above identified instructions and applications cancorrespond to a set of instructions for performing one or more functionsdescribed above. These instructions need not be implemented as separatesoftware programs, procedures or modules. The memory 350 can includeadditional instructions or fewer instructions. Furthermore, variousfunctions of the mobile device 100 may be implemented in hardware and/orin software, including in one or more signal processing and/orapplication specific integrated circuits.

In an implementation, the mobile device 100 includes an integrated GPSreceiver. Alternatively, or in addition, the mobile device 100 canaccept a GPS receiver as an accessory. Communication with an accessoryGPS receiver can occur via a wired connection such as a USB connection,a secure digital interface, or other wired connection types.Communication can also occur via a wireless connection such as IEEE802.x, Bluetooth™, or other wireless communication formats. The locationof the mobile device can be measured using information received fromorbiting GPS satellites using the GPS receiver. The present latitude andlongitude of the mobile device can be determined and shown on thedisplay 102 with a map of the surrounding area. For example, selectionof the map object 144 can present a user with a map showing the user'scurrent location and a menu of options for manipulating the map usingnavigation features of the device 100. Other positioning systems (e.g.,systems using Wi-Fi access points, television signals, cellular grids,etc.) can also be used.

In an implementation, past locations of the device 100 are stored inmemory 350 so that a location history or a traveled path can bedisplayed. These past routes can be bookmarked or otherwise categorizedfor easy recall by the user.

As described above, environmental factors can prevent the location ofthe device being determined. For example, GPS reception is often notpossible unless a line of sight can be established between the GPSreceiver and the number of satellites needed to compute the receiver'slocation. Likewise, other location systems can also experience receptiondegradation, e.g., radio frequency interference or multiple time delayedversions of a transmission received due to reflections off ofsurrounding structures.

In an implementation, the device 100 includes one or more of anaccelerometer 172, a magnetic compass 173, and/or a gyroscope 175. Theaccelerometer 172, compass 173, and/or gyroscope 175 can be used aloneor in combination to measure movements of the device 100. Additionalsensors can be located external to the device 100 on the person of theuser. For example, any, some, or all of an accelerometer, a compass, agyroscope, and an impact sensor can be located on or in the user'sfootwear. An impact sensor detects footwear contact with the ground,facilitating the measurement of a number of steps. A distance traveledcan be estimated using the product of the average length of a user'sstride and a number of steps taken. Alternatively contact with theground during walking can be measured using an accelerometer thatdetects the change in velocity of a shoe as it contacts the ground. Thesensors can be located on or in one or both of the user's shoes. Theexternal sensors can send information to the device 100 via a wirelesslink. The length of the user's stride can be set and stored in devicememory.

Sensor data from accelerometers, a compass, gyroscopes, and impactsensors can be used alone or in combination to, for example, measure themovement of the device 100 from a point of origin or known location (a“fix”) to determine the device's location relative to the fix. Locationmeasurement techniques of this type are generally referred to as “deadreckoning.” Dead reckoning can be used in conjunction with otherlocation measurement techniques such as GPS or user input, and used incases where no satellite or terrestrial positioning signal informationis available (whether the unavailability is due to interference in theoperating environment or the lack or reception capabilities in thedevice). In an implementation, the device 100 is configured to switchinto a dead reckoning positioning mode upon another positioning modebecoming unavailable.

Dead reckoning position measurement is error prone, and small errors inmeasuring a turn, for example, can lead to large errors later if a newfix is not obtained before a lengthy distance is traversed. Frequentlyupdated fixes improve the accuracy of a location shown, for example, ona moving map display of the mobile device 100 measured using deadreckoning.

FIG. 4 is a block diagram of an example navigation settings screen 400of the mobile device of FIG. 1. A user selectable touch-sensitivedisplay button 402 to toggle dead reckoning functions on or off is shownin an enabled state. Touching the button toggles to a disabled state andchanges its appearance to a lighter or “grayed out” appearance. Adefault mode selection 404 is shown. The “vehicle mode” button 408 isshown in an enabled state to indicate that when dead reckoning functionsare active the default dead reckoning mode is the vehicle mode. The“walking mode” button 406 for this selection is showed in a disabledstate. A touch of the “walking mode” button 406 in the state shown wouldcause a walking mode to become enabled, which, in turn, causes the“vehicle mode” button 408 to toggle to the disabled representation.

The “automatically switch to walking mode upon step detection” button410 is shown as enabled. In an implementation, enabling this featurecauses the mobile device 100 to switch to a walking mode of deadreckoning position measurement upon an accelerometer in the mobiledevice 100 or in communication with the mobile device 100, e.g., afootwear impact sensor, detecting walking motions such as, for example,periodic accelerations indicative of steps being taken by a user.

The “lock on street” feature 412 is shown as enabled for both a walkingmode 414 and a vehicle mode 416. In an implementation, a dead reckoningmode of operation in the lock on street setting interprets data from anyof the accelerometer 172, compass 173, and gyroscope 175 such that themeasured movements of the device are presumed to be directed alongstreets of a map of the surrounding area.

The lock on street mode can, for example, be utilized to provideimplicit fixes and resolve errors by adjusting a currently estimatedposition based on a comparison to map data. For example, the mobiledevice 100, by use of the accelerometer 172, compass 173, user inputand/or gyroscope 175, may have a currently estimated location of amobile device as 25 feet north of an intersection. If, however, the userof the mobile device is actually at the intersection, and turns west atthe intersection and walks west in excess of a threshold distance, e.g.,10 feet, then the mobile device 100 may adjust the current estimatedlocation to the position on the map that corresponds to 10 feet west ofthe intersection.

The lock on street mode can, for example, apply the implicit fixes in abounded area, e.g., the implicit fix may not be applied if a user iswalking in an open area, such as a park, in which there are noboundaries, e.g., building walls, to impede the user's path. A moredetailed explanation of the lock on street mode is shown and describedwith respect to FIG. 5.

The “request user feedback” button 418 is shown in an enabled state,indicating the mobile device is in a user feedback fix mode. Thefrequency setting 420 for the user feedback fix mode is set to 10minutes. Touches of the “amount” button 422 can cycle through a range ofoptions, for example, 1, 2, 5, 10, 15, and 20. The “units” button 424can cycle through a range of options, for example, minutes, feet,meters, kilometers, and miles. The “provide contextual photos” modebutton 426 is shown as enabled. When in the user feedback mode, themobile device 100 can receive periodic user feedback to adjust anestimated current location. For example, in the mode setting shown inFIG. 4, a user may be prompted to verify a current position every 10minutes. To assist the user in verifying the current positions, acontextual photo, e.g., a photograph of a nearby landmark, can beprovided. In some implementations, the user can manually enter his orher current location (e.g., latitude and longitude) and/or respond toprompts, as described in reference to FIG. 7.

In an implementation, a vehicle dead reckoning mode uses anaccelerometer reading to determine how the device is positioned relativeto the earth's gravity. That is, the accelerometer is used to detectwhich direction is down relative to the positioning of the device. Thisaxis changes and measurements are updated if the device is reoriented inthe vehicle. In the vehicle mode, sudden accelerations in a positive ornegative direction along the axis of the earth's gravity are given areduced importance in the dead reckoning position measurementcalculation being utilized. Accelerations along this axis are discountedas they are likely caused by undulations of a traveling surface andreactions thereto by a vehicle suspension system. Accelerations alongthe axes perpendicular to the detected gravity axis are given enhancedweight in the vehicle mode as it is primarily these accelerations thatcontribute to displacement of the vehicle from a known fix to a secondposition to be measured via dead reckoning and displayed on a map. In animplementation, accelerations along the axes perpendicular to the axisof gravity are compared with rotations detected by the gyroscope 175 todetermine a change of direction. In an implementation, accelerationsalong the axes perpendicular to the axis of gravity are compared withrotations detected by the magnetic compass 173 to determine a change ofdirection.

In an implementation, a walking dead reckoning mode of positionmeasurement detects an axis of periodic sudden accelerations using theaccelerometer 172 and counts the periodic accelerations as steps of theuser. This axis changes and measurements are updated if the device isreoriented by a user while walking. In an implementation, the device isconfigured to switch to a walking mode of dead reckoning positionmeasurement upon the detection of periodic accelerations. In animplementation, steps are counted by contact indications detected byimpact sensors of footwear of the user. If only one shoe has an impactsensor, the number of impacts can be doubled to arrive at a step count.A pedometer function can calculate the product of the user's averagestride and the step count to determine a distance traversed.Accelerations in axes perpendicular to the axis of periodic accelerationare measured to determine changes in direction. In an implementation,accelerations in axes perpendicular to the axis of periodic accelerationare compared with rotations detected by the gyroscope 175 to determine achange of direction. In an implementation, accelerations in axesperpendicular to the axis of periodic acceleration are compared withrotations detected by the magnetic compass 173 to determine a change ofdirection. In an implementation, the walking mode combines pedometerfunctions with compass measurements without use of accelerometer orgyroscope data.

FIG. 5 is a block diagram of an example map display 500 of the mobiledevice of FIG. 1. The map shows a number of streets and a point oforigin ‘O’ 502. The dashed line 504 represents an example path measuredby the device 100 from the origin 502 to a destination 506 measuredusing dead reckoning with a lock on street setting disabled. The solidline 508 represents an example path measured by the device 100 from theorigin 502 to a destination 510 with a lock on street setting enabled.

In the two examples shown, the sensor measurements observed by thedevice 100 are the same, but the interpretation of the data isdifferent. In the case of the path represented by the line 504, the deadreckoning calculation did not lock the movements of the device to thestreets of the map. In the case of the measured path represented by line508, the device interpreted the sensor data in accordance with the lockon street setting to keep the movement confined to the streets of a mapsurrounding the fix represented by the origin 502. The lock on streetmode can thus provide a more accurate estimate of a user's location ifthe user restricts her movement to streets and sidewalks along thosestreets.

FIG. 6 is a flowchart of an example process 600 for obtaining an updateddead reckoning fix through comparison of a detected turn with map data.The process 600 can, for example, be implemented in a processing device,such as the mobile device 100 of FIG. 1, implementing user processing insoftware and/or hardware. Movements are measured to estimate a positionusing dead reckoning (602). For example, movements can be measured byinterpreting sensor data in one or more processors of a mobile device100 where the sensor data is received from one or all of theaccelerometer 172, compass 173, and/or gyroscope 175. Using an on boardclock, the processor(s) can, for example, interpret the sensor data asmovements of the device 100. Using acceleration data, for example, theprocessor(s) can determine velocity, and position. Alternatively, or inaddition, compass data can be used to determine a heading. In someimplementations a number of steps and user stride information can beused to determine a distance walked.

Upon the detection of a turn meeting a threshold (such as a minimumangle of turn from a former direction of travel) (604), map data of thearea surrounding the current estimated location is checked for turnswithin a threshold distance of the estimated location (606). Forexample, upon a processor of the mobile device 100 detecting a turn insensor data, map data stored in local memory or provided by a networkedservice can be searched for the existence of such a turn at a candidatelocation within a threshold distance.

If a turn is found within the threshold distance, the map data ischecked to determine if the turn of the map has an angle within athreshold number of degrees of the angle of the detected turn in thedirection of the detected turn (608). If a turn is found in the map datathat meets these criteria, the estimated location of the device ischanged to the location of the turn on the map (610). The turn locationis used as an updated fix for dead reckoning measurements made followingthe detected turn (612). For example, the last known location of amobile device 100 can be updated to the turn location and used insubsequent dead reckoning location estimates.

In an implementation, an updated fix for dead reckoning positionmeasurement is obtained by gathering input from a user during a journey.In an implementation, input is gathered by prompting the user to answera map related query. Prompts can occur at periodic intervals of time,distance, or upon the detection of movement meeting threshold criteria.Prompts can be accompanied by an audible or vibrating alert from thedevice 100. FIG. 7 is a block diagram of an example user feedback prompt700 of the mobile device of FIG. 1. A feedback prompt 700 includes aquestion “Did you just turn left on Main Street?” This prompt can bemade, for example, on a display of a mobile device 100 accompanied by analert to indicate the existence of the prompt to a user. If anaffirmative answer is given by a user touching “YES” button 702, theintersection of Main Street and the last road the user was traveling onis used as an updated fix for estimating the location of the deviceusing dead reckoning.

“Set New Position” button 706 is also shown in FIG. 7. In animplementation, a user press of button 706 can cause the example screenof FIG. 8 to be displayed. FIG. 8 is a block diagram of an examplescreen 800 for accepting an updated current location from a user on themobile device of FIG. 1. Button 800 prompts the user to adjust the mapdisplay, through zooming and panning controls, for example, so that theuser's′ current location (and that of the mobile device 100) is shown.The button 800 further instructs the user to double tap on the user'scurrent location. Upon the user double tapping, for example, theintersection of 1^(st) Ave. and Main Street, this location is used as anupdated fix for use in dead reckoning position estimation for laterdetected movements. In some implementations, the user can enter theircurrent location using a virtual keyboard or other input mechanism.

In an implementation, the device displays a photo of an object or scenethat should be viewable from the estimated current location of thedevice 100 and in some implementations queries the user as to whetherthe actual object or scene depicted can be seen by the user at herpresent location. FIG. 9 is a block diagram of an example user feedbackprompt 900 including a photograph on the mobile device of FIG. 1. In animplementation, the device displays a photo of an object or scene thatshould be viewable from the estimated location of the mobile device 100and queries the user as to whether the scene is viewable from the user'scurrent location. A dialog box 900 includes the question “Can you seethis scene?” A user touch of the “Fullscreen” button 904 causes thephoto to be displayed in a larger format. The user can touch “Yes”button 906 or “No” button 908 to provide the requested information. Anaffirmative answer causes the location of the photo to be used as anupdated fix.

Photos can be selected for display on the mobile device 100 by searchinga database of geo-tagged photos. Geo-tagged photos are photos which haveinformation saved along with the photo that indicates the location atwhich the photo was taken. A photo is selected for display if the photomatches the estimated location of the device 100 within a thresholddistance. Photos can transmitted from a remote location to the device100 via a network connection, for example, a cellular, IEEE 802.x, orother wireless connection. In an embodiment, photo timestamps arechecked to provide photos taken at a similar time of day as the time ofdisplay on the device 100 so that, for example, a photo of a scene of anarea at night is provided on the device when the device is being used atnight. In an implementation, photos having a shorter focal length (widerangle) recorded in the photo's EXIF (exchangeable image file format)information are given priority for display over photos with a longerfocal length (telephoto) recorded in the EXIF information to provide awider field of view to the user.

FIG. 10 is a flowchart of an example process for prompting a user toobtain an updated fix of the mobile device of FIG. 1. The process 100can, for example, be implemented in a processing device, such as themobile device 100 of FIG. 1, in software and/or hardware. Movements ofthe device are measured using dead reckoning (1002). Movements can bemeasured, for example, by one or all of an accelerometer 172, a compass173, and a gyroscope 175 providing sensor data to one or more processorsof the mobile device 100. If a user prompting condition is met (1004),input is requested from the user regarding the current location of thedevice (1006). User prompting conditions can, for example, include anelapsed time, a measured distance, a detected turn, manual entry oflocation (e.g., position coordinates), and identification of a nearbygeo-tagged photograph. Prompts can, for example, be shown on a displayof the mobile device 100 and be accompanied by an alert. If the userinput establishes the location of the device (1008) then the establishedlocation is used as an updated fix for dead reckoning estimation of thelocation of the device for later movements. The updated position can beused, for example, as a last known location of the mobile device 100 foruse in subsequent dead reckoning position calculations.

FIG. 11 is a flowchart of an example process 1100 for verifying anestimated location of the mobile device of FIG. 1. The location of themobile device is determined (1102). The location can be determined, forexample, via user input, positioning system data, and/or dead reckoningmeasurements. Sensor data related to movement of the mobile device isreceived. The sensor data can be received, for example, from sensorssuch as the accelerometer 172, compass 173, gyroscope 175, and/orfootwear impact sensors. An estimated device location is determinedbased on the location determined in 1102 and the sensor data (1108). Theestimated device location can be determined, for example, by performingdead reckoning calculations using the received sensor data to measuremovements of the mobile device from the determined location. In animplementation, the estimated device location can be determined based onone or more of a plurality of estimate modes.

The estimated device location is compared to map data (1108). Forexample, one or more characteristics of the received sensor data can becompared to one or more characteristics of the map data to identify acandidate location. In an implementation, the candidate location is turnin a pathway defined by the map data. In an implementation, thecomparison is a comparison of one or more characteristics of a detectedturn with one or more turn characteristics of the map data. In animplementation, the comparison is a request for user feedback regardingthe candidate location. The estimated device location is verified basedon the comparison (1110). The estimated device location can be verified,for example, if one or more characteristics of received sensor data areconsistent with one or more characteristics of the candidate location.In an implementation, the estimated device location is verified by aresponse to a feedback request.

The apparatus, methods, flow diagrams, and structure block diagramsdescribed in this patent document can be implemented in computerprocessing systems including program code comprising programinstructions that are executable by the computer processing system.Other implementations can also be used. Additionally, the flow diagramsand structure block diagrams described in this patent document, whichdescribe particular methods and/or corresponding acts in support ofsteps and corresponding functions in support of disclosed structuralmeans, can also be utilized to implement corresponding softwarestructures and algorithms, and equivalents thereof.

The foregoing descriptions of implementations of the present inventionare presented for purposes of illustration and description. They are notintended to be exhaustive or to limit the invention to the precise formsdisclosed. Rather, it should be appreciated that many modifications andvariations are possible in view of the above teachings. Theimplementations were chosen and described in order to best explain theprinciples of the invention and its practical applications, to therebyenable others skilled in the art to best utilize the invention andvarious implementations with various modifications as are suited to theparticular use contemplated.

1. A computer-implemented method, comprising: storing a location of amobile device in memory; receiving sensor data related to movement of amobile device; detecting a turn in the movement of the mobile devicebased on the received sensor data; estimating a current location of thedevice based on the sensor data and the stored location; determiningthat a portion of a pathway defined by map data corresponding to theestimated current location has characteristics consistent withcharacteristics of the detected turn; based on the determination,identifying a candidate location corresponding to the portion of thepathway that has characteristics consistent with characteristics of thedetected turn; and updating the stored location of the mobile devicewith the candidate location.
 2. The method of claim 1, wherein thepathway is a street.
 3. The method of claim 1, wherein the pathway is asidewalk.
 4. The method of claim 1, wherein the sensor data is generatedby an accelerometer.
 5. The method of claim 1, wherein the sensor datais generated by a gyroscope.
 6. The method of claim 1, wherein thesensor data is generated by a compass.
 7. The method of claim 1, whereinidentifying the candidate location comprises determining that theestimated current location is within a threshold distance of the portionof the pathway defined by the map data.
 8. The method of claim 1,wherein identifying the candidate location comprises determining that anangle of the detected turn is within a threshold number of degrees of anangle of a turn at the portion of the pathway defined by the map data.9. The method of claim 1, further comprising: presenting a promptrequesting that a user verify that the candidate location is the actuallocation of the mobile device; receiving input confirming that thecandidate location is the actual location of the mobile device; and inresponse to receiving the confirmation, updating the stored location ofthe mobile device with the candidate location.
 10. A non-transitorycomputer-readable medium including one or more sequences of instructionswhich, when executed by one or more processors, causes: storing alocation of a mobile device in memory; receiving sensor data related tomovement of a mobile device; detecting a turn in the movement of themobile device based on the received sensor data; estimating a currentlocation of the device based on the sensor data and the stored location;determining that a portion of a pathway defined by map datacorresponding to the estimated current location has characteristicsconsistent with characteristics of the detected turn; based on thedetermination, identifying a candidate location corresponding to theportion of the pathway that has characteristics consistent withcharacteristics of the detected turn; and updating the stored locationof the mobile device with the candidate location.
 11. The non-transitorycomputer-readable medium of claim 10, wherein the pathway is a street.12. The non-transitory computer-readable medium of claim 10, wherein thepathway is a sidewalk.
 13. The non-transitory computer-readable mediumof claim 10, wherein the sensor data is generated by an accelerometer.14. The non-transitory computer-readable medium of claim 10, wherein thesensor data is generated by a gyroscope.
 15. The non-transitorycomputer-readable medium of claim 10, wherein the sensor data isgenerated by a compass.
 16. The non-transitory computer-readable mediumof claim 10, wherein the instructions that cause identifying thecandidate location comprise instructions that cause determining that theestimated current location is within a threshold distance of the portionof the pathway defined by the map data.
 17. The non-transitorycomputer-readable medium of claim 10, wherein the instructions thatcause identifying the candidate location comprise instructions thatcause determining that an angle of the detected turn is within athreshold number of degrees of an angle of a turn at the portion of thepathway defined by the map data.
 18. The non-transitorycomputer-readable medium of claim 10, wherein the instructions cause:presenting a prompt requesting that a user verify that the candidatelocation is the actual location of the mobile device; receiving inputconfirming that the candidate location is the actual location of themobile device; and in response to receiving the confirmation, updatingthe stored location of the mobile device with the candidate location.19. A system comprising: one or more processors; and a computer-readablemedium including one or more sequences of instructions which, whenexecuted by the one or more processors, causes: storing a location of amobile device in memory; receiving sensor data related to movement of amobile device; detecting a turn in the movement of the mobile devicebased on the received sensor data; estimating a current location of thedevice based on the sensor data and the stored location; determiningthat a portion of a pathway defined by map data corresponding to theestimated current location has characteristics consistent withcharacteristics of the detected turn; based on the determination,identifying a candidate location corresponding to the portion of thepathway that has characteristics consistent with characteristics of thedetected turn; and updating the stored location of the mobile devicewith the candidate location.
 20. The system of claim 19, wherein thepathway is a street.
 21. The system of claim 19, wherein the pathway isa sidewalk.
 22. The system of claim 19, further comprising anaccelerometer, wherein the sensor data is generated by theaccelerometer.
 23. The system of claim 19, further comprising agyroscope, wherein the sensor data is generated by the gyroscope. 24.The system of claim 19, further comprising a compass, wherein the sensordata is generated by the compass.
 25. The system of claim 19, whereinthe instructions that cause identifying the candidate location compriseinstructions that cause determining that the estimated current locationis within a threshold distance of the portion of the pathway defined bythe map data.
 26. The system of claim 19, wherein the instructions thatcause identifying the candidate location comprise instructions thatcause determining that an angle of the detected turn is within athreshold number of degrees of an angle of a turn at the portion of thepathway defined by the map data.
 27. The system of claim 19, wherein theinstructions cause: presenting a prompt requesting that a user verifythat the candidate location is the actual location of the mobile device;receiving input confirming that the candidate location is the actuallocation of the mobile device; and in response to receiving theconfirmation, updating the stored location of the mobile device with thecandidate location.